#include "StdAfx.h"
#include "Radian.h"

VAMPIRE_NAMESPACE_BEGIN

Vampire::Radian Radian::operator+( const Radian& rhs ) const
{
	return Radian(mData + rhs.mData);
}

Vampire::Radian Radian::operator+( const Real& rhs ) const
{
	return Radian(mData + rhs);
}

Vampire::Radian Radian::operator-( const Radian& rhs ) const
{
	return Radian(mData - rhs.mData);
}

Vampire::Radian Radian::operator-( const Real& rhs ) const
{
	return Radian(mData - rhs);
}

Vampire::Radian Radian::operator*( const Radian& rhs ) const
{
	return Radian(mData * rhs.mData);
}

Vampire::Radian Radian::operator*( const Real& rhs ) const
{
	return Radian(mData * rhs);
}

Vampire::Radian Radian::operator/( const Radian& rhs ) const
{
	return Radian(mData / rhs.mData);
}

Vampire::Radian Radian::operator/( const Real& rhs ) const
{
	return Radian(mData / rhs);
}

Radian& Radian::operator+=( const Radian& rhs )
{
	mData += rhs.mData;
	return *this;
}

Radian& Radian::operator+=( const Real& rhs )
{
	mData += rhs;
	return *this;
}

Radian& Radian::operator-=( const Radian& rhs )
{
	mData -= rhs.mData;
	return *this;
}

Radian& Radian::operator-=( const Real& rhs )
{
	mData /= rhs;
	return *this;
}

Radian& Radian::operator*=( const Radian& rhs )
{
	mData *= rhs.mData;
	return *this;
}

Radian& Radian::operator*=( const Real& rhs )
{
	mData *= rhs;
	return *this;
}

Radian& Radian::operator/=( const Radian& rhs )
{
	mData /= rhs.mData;
	return *this;
}

Radian& Radian::operator/=( const Real& rhs )
{
	mData /= rhs;
	return *this;
}

void Radian::operator=( const Radian& rhs )
{
	mData = rhs.mData;
}

void Radian::operator=( const Real& rhs )
{
	mData = rhs;
}

bool Radian::operator==( const Radian& rhs ) const
{
	return mData == rhs.mData ? true : false;
}

bool Radian::operator!=( const Radian& rhs ) const
{
	return mData == rhs.mData ? false : true;
}

Vampire::Radian Radian::operator+() const
{
	return *this;
}

Vampire::Radian Radian::operator-() const
{
	return Radian(-mData);
}

Vampire::Degree Radian::toDegree() const
{
	return Degree(mData * PI / 180.0f);
}

VAMPIRE_NAMESPACE_END